414 research outputs found
Beyond Surveys: Analyzing Software Development Artifacts to Assess Teaching Efforts
This Innovative Practice Full Paper presents an approach of using software
development artifacts to gauge student behavior and the effectiveness of
changes to curriculum design. There is an ongoing need to adapt university
courses to changing requirements and shifts in industry. As an educator it is
therefore vital to have access to methods, with which to ascertain the effects
of curriculum design changes. In this paper, we present our approach of
analyzing software repositories in order to gauge student behavior during
project work. We evaluate this approach in a case study of a university
undergraduate software development course teaching agile development
methodologies. Surveys revealed positive attitudes towards the course and the
change of employed development methodology from Scrum to Kanban. However,
surveys were not usable to ascertain the degree to which students had adapted
their workflows and whether they had done so in accordance with course goals.
Therefore, we analyzed students' software repository data, which represents
information that can be collected by educators to reveal insights into learning
successes and detailed student behavior. We analyze the software repositories
created during the last five courses, and evaluate differences in workflows
between Kanban and Scrum usage
Should I Bug You? Identifying Domain Experts in Software Projects Using Code Complexity Metrics
In any sufficiently complex software system there are experts, having a
deeper understanding of parts of the system than others. However, it is not
always clear who these experts are and which particular parts of the system
they can provide help with. We propose a framework to elicit the expertise of
developers and recommend experts by analyzing complexity measures over time.
Furthermore, teams can detect those parts of the software for which currently
no, or only few experts exist and take preventive actions to keep the
collective code knowledge and ownership high. We employed the developed
approach at a medium-sized company. The results were evaluated with a survey,
comparing the perceived and the computed expertise of developers. We show that
aggregated code metrics can be used to identify experts for different software
components. The identified experts were rated as acceptable candidates by
developers in over 90% of all cases
Towards Empirically Validated Remedies for Scrum Retrospective Headaches
Agile methods, especially Scrum, have become staples of the modern software development industry. Retrospective meetings are Scrum\u27s instrument for process improvement and adaptation. They are considered one of the most important aspects of the Scrum method and its implementation in organizations. However, Retrospectives face their own challenges. Agile practitioners have highlighted common problems, i.e. headaches, that repeatedly appear in meetings and negatively impact the quality of process improvement efforts. To remedy these headaches, Retrospective activities, which can help teams think together and break the usual routine, have been proposed. In this research, we present case studies of educational and industry teams, investigating the effects of eleven Retrospective activities on five identified headaches. While we find evidence for the claimed benefits of activities in the majority of studied cases, application of remedies also led to new headaches arising
Towards Using Data to Inform Decisions in Agile Software Development: Views of Available Data
Software development comprises complex tasks which are performed by humans.
It involves problem solving, domain understanding and communication skills as
well as knowledge of a broad variety of technologies, architectures, and
solution approaches. As such, software development projects include many
situations where crucial decisions must be made. Making the appropriate
organizational or technical choices for a given software team building a
product can make the difference between project success or failure. Software
development methods have introduced frameworks and sets of best practices for
certain contexts, providing practitioners with established guidelines for these
important choices. Current Agile methods employed in modern software
development have highlighted the importance of the human factors in software
development. These methods rely on short feedback loops and the
self-organization of teams to enable collaborative decision making. While Agile
methods stress the importance of empirical process control, i.e. relying on
data to make decisions, they do not prescribe in detail how this goal should be
achieved. In this paper, we describe the types and abstraction levels of data
and decisions within modern software development teams and identify the
benefits that usage of this data enables. We argue that the principles of
data-driven decision making are highly applicable, yet underused, in modern
Agile software development
Challenges (and Opportunities!) of a Remote Agile Software Engineering Project Course During COVID-19
COVID-19 and its immediate impacts on teaching activities have required changes from computer science educators worldwide. We switched our on-site courses to remote setups without detailed knowledge of what tools, techniques, and methods would work in different teaching contexts. A growing amount of experience reports on general best practices for remote teaching in higher education are available. However, university courses featuring practical software development projects present unique challenges regarding remote learning, as effective student collaboration is vital. In these courses, students tackle situations in the project and their team meetings that would also occur in real software projects experienced in industry settings. In this paper, we share our experiences on how we successfully adapted our software engineering project course to a remote setup, which challenges we observed in student teams and how they can be mitigated, and what (surprisingly) worked better than expected. Finally, we propose improvements that we expect will be beneficial not only for future remote-only but also for hybrid or on-site courses
Investigating Software Engineering Artifacts in DevOps Through the Lens of Boundary Objects
Software engineering artifacts are central to DevOps, enabling the collaboration of teams involved with integrating the development and operations domains. However, collaboration around DevOps artifacts has yet to receive detailed research attention. We apply the sociological concept of Boundary Objects to describe and evaluate the specific software engineering artifacts that enable a cross-disciplinary understanding. Using this focus, we investigate how different DevOps stakeholders can collaborate efficiently using common artifacts. We performed a multiple case study and conducted twelve semi-structured interviews with DevOps practitioners in nine companies. We elicited participants\u27 collaboration practices, focusing on the coordination of stakeholders and the use of engineering artifacts as a means of translation. This paper presents a consolidated overview of four categories of DevOps Boundary Objects and eleven stakeholder groups relevant to DevOps. To help practitioners assess cross-disciplinary knowledge management strategies, we detail how DevOps Boundary Objects contribute to four areas of DevOps knowledge and propose derived dimensions to evaluate their use
- …